Convolutional codes are often used in digital communication systems to protect transmitted information from error. Such communication systems include the Direct Sequence Code Division Multiple Access (DS-CDMA) standard IS-95, the Global System for Mobile Communications (GSM), and next generation wideband communication systems. Typically in these systems, a signal is convolutionally coded into an outgoing code vector that is transmitted. At a receiver, a decoder, such as a Viterbi decoder as is known in the art, uses a trellis structure to perform an optimum search for the transmitted signal bits based on maximum likelihood criterion.
More recently, turbo codes have been developed that outperform conventional coding techniques. Turbo codes are generally composed of two or more convolutional codes and turbo interleavers. Correspondingly, turbo decoding is iterative and uses a soft output decoder to decode the individual convolutional codes. The soft outputs of the decoders are used in the decoding procedure to iteratively approach the converged final results.
FIG. 1 shows a typical turbo encoder that is constructed with one interleaver and two constituent codes which are recursive systematic convolutional (RSC) codes, but can be block codes, also. A turbo encoder is shown which is a parallel concatenation of two RSCs with an interleaver, π, between them. The output, Ck, of the turbo encoder is generated by multiplexing (concatenating) the information bits, bk, and parity bits, p1k and p2k, from the two encoders. Typically, the parity bits are punctured as is known in the art to increase code rate. Each RSC has a one parity bit output, but the number of parity bits of the RSC can be more than one.
Typically, the encoded data is transmitted to a receiver, which uses error detection. If an error is detected, the receiver can request that the transmitter, such as a base station for example, retransmit the data using an Automatic Repeat Request (ARQ). In other words, if a receiver is not able to resolve the data bits in time, the radio can request the transmitter to resend that portion of bits from the block or a portion of a frame of data that failed so as to be properly decoded. There are several known techniques to provide ARQ. In addition, there can be ARQ combining of different transmissions. Further, the receiver can attempt to provide error correction as well as error detection. This is referred to as a Hybrid Automatic Repeat Request (HARQ).
Two known forms of HARQ are Chase combining and Incremental Redundancy (IR). Chase combining is a simplified form of HARQ wherein the receiver simply requests a retransmission of the same codeword again. IR is more complicated in that it provides for a retransmission of the code word using more parity bits (that were punctured during the previous transmission), lowering the overall code rate. Conventional means of defining a puncturing pattern, such as a rate matching algorithm or alternatively a classical code puncturing matrix, as are known in the art, are unable to provide the necessary smooth and flexible transition between changing coding rates, as are envisioned for next generation communication products.
What is needed is an improved turbo coder that utilizes a unified puncturing scheme, which allows flexibility in choosing coding rates for the initial and subsequent transmissions. It would also be advantageous to provide this improvement using any of the combined ARQ techniques. It would also be of benefit to provide an improved turbo coder with a minimal increase of computational complexity or implementation effort.